Obtaining the Address of a Virtual Function Table

In an application written in the C programming language, you can retrieve the address of the IAVIStreamVtbl structure by using the NewBall function. This function returns the address of a structure containing a pointer to IAVIStreamVtbl. Information following the IAVIStreamVtbl pointer specifies data used internally by AVIBall. Your stream handler can append its own information after the IAVIStreamVtbl pointer. This information is returned in subsequent calls to your stream handler.

PAVISTREAM WINAPI NewBall(VOID)

    PAVIBALL pball;

    pball = (PAVIBALL) GlobalAllocPtr(GHND, sizeof(AVIBALL));

    if (!pball)

        return 0;

    pball->lpvtbl = &AVIBallHandler;

    pball->lpvtbl->Create((PAVISTREAM) pball, 0, 0);

    return (PAVISTREAM) pball;

}